#!/bin/bash
# ---------变量----------
# 工作路径，即本脚本所在路径
WORK_DIR="."
REPORT_FILE="reportAll.csv" #测试报告汇总表文件名
TIME_NOW="" #当前时间
# 被测机信息，使用分号分隔（;)不同设备，括号内为被测机工作路径,不填写括号，默认为~
#TEST_DEVICE_INFO="192.168.114.24;192.168.114.25(/u01/benchmark)"
TEST_DEVICE_INFO="192.168.114.24;192.168.114.25(/u01/benchmark)"

# ---------内部变量-------
TEST_SCRIPT_FILENAME=sysbench_run.sh
TEST_REPORT_FILENAME=report.csv
TEST_REPORT_LINE_CPU=""
TEST_REPORT_LINE_THREAD=""
TEST_REPORT_LINE_MEMORY=""
TEST_REPORT_LINE_DISK=""

# 将测试脚本拷贝到被测机
ALL_INFOS=`echo ${TEST_DEVICE_INFO} | awk -F\; '{for(i=1;i<=NF;i++){print $i}}'`
# echo ${ALL_IP}
for TEST_INFO in ${ALL_INFOS}
do
    # 拆分IP地址和工作路径
    TEST_IP="" # IP地址
    TEST_WORK_DIR="" # 工作路径
    IS_HAVE_WORK_DIR=`echo ${TEST_INFO} | grep "("`
    if [[ "${IS_HAVE_WORK_DIR}" ]];then
        TEST_IP=`echo ${TEST_INFO} | awk -F\( '{print $1;}'`
        TEST_WORK_DIR=`echo ${TEST_INFO} | awk -F\( '{print $2;}' | tr ')' ' ' | sed s/[[:space:]]//g`
    else
        # 没有找到括号，工作路径默认置为~
        TEST_IP=${TEST_INFO}
        TEST_WORK_DIR="~"
    fi

    echo "Testing... " ${TEST_IP} ${TEST_WORK_DIR}

    # 保证测试机器上，工作目录存在
    ssh root@${TEST_IP} "mkdir -p ${TEST_WORK_DIR}"

    # 将测试脚本拷贝到目标机器上
    scp ${WORK_DIR}/${TEST_SCRIPT_FILENAME} root@${TEST_IP}:${TEST_WORK_DIR}

    # 执行测试脚本
    TIME_NOW=$(date "+%Y.%m.%d-%H:%M:%S")
    echo ssh root@${TEST_IP} "cd ${TEST_WORK_DIR};sh ${TEST_WORK_DIR}/${TEST_SCRIPT_FILENAME}"
    ssh root@${TEST_IP} "cd ${TEST_WORK_DIR};sh ${TEST_WORK_DIR}/${TEST_SCRIPT_FILENAME}"

    # 将测试报告复制回来
    scp root@${TEST_IP}:${TEST_WORK_DIR}/${TEST_REPORT_FILENAME} ${WORK_DIR}/${TEST_REPORT_FILENAME}-${TEST_IP}

    #确认测试报告汇总表存在
    if test -f "${REPORT_FILE}"; then
        echo "${TIME_NOW} add ${TEST_IP} report.csv"
    else
        echo """测试时间,测试主机IP,CPU测试分数,TEST_Threads,内存传输速度MB/s(8KB),内存传输速度MB/s(4MB),硬盘读操作/s,硬盘写操作/s,硬盘fsyncs同步/s,硬盘读吞吐率（MB）,硬盘写吞吐率（MB）""" >>  ${WORK_DIR}/${REPORT_FILE}
    fi

    #获取单个测试报告数据
    TEST_REPORT_LINE_CPU=`cat ${WORK_DIR}/${TEST_REPORT_FILENAME}-${TEST_IP} |grep CPU`
    TEST_REPORT_LINE_THREAD=`cat ${WORK_DIR}/${TEST_REPORT_FILENAME}-${TEST_IP} |grep Threads`
    TEST_REPORT_LINE_MEMORY=`cat ${WORK_DIR}/${TEST_REPORT_FILENAME}-${TEST_IP} |grep Memory`
    TEST_REPORT_LINE_DISK=`cat ${WORK_DIR}/${TEST_REPORT_FILENAME}-${TEST_IP} |grep Disk`

    #填充测试报告汇总表
    echo """${TIME_NOW},${TEST_IP},${TEST_REPORT_LINE_CPU#*':'},${TEST_REPORT_LINE_THREAD#*':'},${TEST_REPORT_LINE_MEMORY#*':'},${TEST_REPORT_LINE_DISK#*':'}"""  >> ${WORK_DIR}/${REPORT_FILE}



done


